Penyesuaian model
Default untuk spec alurkerja bpmn ini belum di standarkan perl tanggal 24 May 2023 jadinya kita harus melakukan perubahan pada spec yang akan kita gunakan
Start Process
Pada Model start process dapat menggunaakan kombinasi seperti ini dan dapat di sesuaikan dengan keperluan masing masing kedepannya
class Cuti extends BpmnModel
{
protected $table = 'cuti';
protected array $hiddenOnCreate =['process_definition_id'];
protected array $hiddenOnList =['process_definition_id'];
protected array $hiddenOnEdit =['process_definition_id'];
protected function getUser_idSelection()
{
return new UrlForeignSelection("/api/profile/user-profile", "get", "id", "first_name");
}
public function tableValueMapping(): array
{
return [
new BaseTableValue("user_id", "hasOne", "author", "first_name")
];
}
}
Konfigurasi model diatas digunakan untuk menghide process_definition_id dari semua aksi list, edit dan tambah selain itu membuat dropdown untuk user_id yang mengambil dari url /api/profile/user-profile dengan key id dan first name sbagai label yang akan di gunakan dan juga menambahkan tableValueMapping untuk memunculkan user first_name pada table yang akan di gunakan
Usertask Konfirmasi cuti
sama halnya dengan start process kita dapat mengubah spec
class CutiKonfirmasiCuti extends UserTaskModel
{
protected array $hiddenOnCreate = ['busniess_key'];
protected array $hiddenOnEdit = ['busniess_key'];
protected $table = 'cuti_cuti_konfirmasi_cuti';
protected array $processVariables = [
'decision'
];
public function tableValueMapping(): array
{
return [
new BaseTableValue("busniess_key", "hasOne", "cuti", "alasan_cuti")
];
}
public function getDecisionSelection(): SelectionContract
{
return new StaticSelection([
[
"key" => "diterima",
"label" => "Diterima",
],
[
"key" => "ditolak",
"label" => "Ditolak",
]
], "key", "label");
}
}
Info , Jika tidak variable tidak termasuk field database maka dapat menggunakan variable
transientProcessVariablesdibandingprocessVariables
Konfigurasi yang diguanakn adalah melakukan hide field busniess_key pada aksi form dengan tujuan kita tidak perlu lagi mengisi busniesskey karena busniesskey bisa di ambil dari process instance yang berjalan lalu kitak deklarasikan decision sebagai process variable dimana decision ini akan di push ke server camunda, lalu melakukan mapping table dengan fungsi tableValueMapping agar value yang muncul diambil dari cuti alasan cuti bukan id nya , setelah itu membuat static selection untuk field Decision dengan fungsi getDecisionSelection ,
Usertask Revisi Cuti
Hampir sama dengan aksi konfirmasi cuti spec yang di gunakan sebagai berikut
class CutiRevisiCuti extends UserTaskModel
{
protected $table = 'cuti_cuti_revisi_cuti';
protected array $hiddenOnCreate = ['busniess_key'];
protected array $hiddenOnEdit = ['busniess_key'];
public function tableValueMapping(): array
{
return [
new BaseTableValue("busniess_key", "hasOne", "cuti", "alasan_cuti")
];
}
}
Konfigursi yang di gunakan adalah menghide busniesskey pada aksi create dengan alasan yang sama dengan aksi konfirmasi namun perbedaannya pada aksi revisi cuti tidak adanya field decision yang perlu di push ke camunda